package com.micro.ai.template.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.micro.ai.template.entity.TemplateRating;

import java.util.Map;

/**
 * 模板评分Service
 *
 * @author micro-ai
 * @since 0.0.1
 */
public interface TemplateRatingService extends IService<TemplateRating> {

    /**
     * 创建或更新评分
     *
     * @param templateRating 评分信息
     * @return 评分结果
     */
    TemplateRating createOrUpdateRating(TemplateRating templateRating);

    /**
     * 获取模板的评分列表
     *
     * @param templateId 模板ID
     * @param page 分页参数
     * @return 评分列表
     */
    IPage<TemplateRating> getRatingsByTemplateId(String templateId, Page<TemplateRating> page);

    /**
     * 获取用户对模板的评分
     *
     * @param templateId 模板ID
     * @param userId 用户ID
     * @return 评分信息
     */
    TemplateRating getUserRating(String templateId, String userId);

    /**
     * 删除评分
     *
     * @param ratingId 评分ID
     * @param userId 用户ID
     */
    void deleteRating(String ratingId, String userId);

    /**
     * 获取模板的平均评分
     *
     * @param templateId 模板ID
     * @return 平均评分和统计信息
     */
    Map<String, Object> getAverageRating(String templateId);

    /**
     * 获取评分统计分布
     *
     * @param templateId 模板ID
     * @return 评分分布（1-5星的数量）
     */
    Map<Integer, Long> getRatingDistribution(String templateId);
}

